-- FUNCTION: public.widget_Table_otAppointmentDashboard1(date, integer, integer)

-- DROP FUNCTION IF EXISTS public."widget_Table_otAppointmentDashboard1"(date, integer, integer);

CREATE OR REPLACE FUNCTION public."widget_Table_otAppointmentDashboard1"(
	"fromDate" date DEFAULT NULL::date,
	"referenceId" integer DEFAULT NULL::integer,
	"locationId" integer DEFAULT NULL::integer)
    RETURNS TABLE("Salutation" character varying, "PatientName" text, "UMRNo" character varying, "AppointmentTime" text, "SpecializationName" character varying, "SurgeryId" integer, "SurgeryName" text) 
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
    ROWS 1000

AS $BODY$
begin
return query

select Pa."Salutation",Pa."FullName" as "PatientName",Pa."UMRNo",
 TO_CHAR(ot."SignInDate", 'hh12:mi AM')  as "AppointmentTime",
 s."SpecializationName",ot."SurgeryId",s1."Name" as "SurgeryName"
from "OTRegister" ot
--join "AppointmentType" AT on AT."AppointmentTypeId" =apt."AppointmentTypeId"
join "Patient" Pa on Pa."PatientId"  = ot."PatientId" 
join "Provider" Pr on Pr."ProviderId"  = ot."ProviderId" 
 join "Specialization" s on s."SpecializationId" = ANY (Pr."Specializations")
 join "Surgery" s1 on s1."SurgeryId"=ot."SurgeryId"
where 
ot."SignInDate"::date="fromDate" and ot."Active" is true 
and case when "referenceId" is null then 1=1 else ot."ProviderId"= "referenceId" end
and case when "locationId" is null then 1=1 else ot."LocationId"= "locationId" end 
;

end
$BODY$;

ALTER FUNCTION public."widget_Table_otAppointmentDashboard1"(date, integer, integer)
    OWNER TO postgres;
